package 每日一题;

import 链表.ListNode;

public class No82删除排序链表中的重复元素II {

    /**
     * 给定一个排序链表，删除所有含有重复数字的节点，只保留原始链表中 没有重复出现 的数字。
     *
     * 示例 1:
     * 输入: 1->2->3->3->4->4->5
     * 输出: 1->2->5
     * 示例 2:
     * 输入: 1->1->1->2->3
     * 输出: 2->3
     */

    //注意:只保存没有重复的数字
    public ListNode deleteDuplicates(ListNode head) {

        if(head==null){
            return null;
        }

        ListNode dump=new ListNode(-1,head);
        ListNode cur=head;
        ListNode last=dump;

        while (cur!=null){

            boolean flag=false;
            while (cur.next!=null&&cur.val==cur.next.val){
                cur=cur.next;
                flag=true;
            }

            if(flag){
                last.next=cur.next;
            }else{
                last=cur;
            }

            cur=cur.next;

        }

        return dump.next;
    }

    public static void main(String[] args) {
        No82删除排序链表中的重复元素II n=new No82删除排序链表中的重复元素II();
        ListNode listNode = ListNode.createListNode(new int[]{1,1});
        ListNode result = n.deleteDuplicates(listNode);
        ListNode.printListNode(result);
    }

}
